#pragma once

#include <assert.h>
#include <stdbool.h>

// 定义队列

typedef BTNode QDataType ;

typedef struct QueueNode
{

    QDataType* data ;

    struct QueueNode* next ;

} QNode ;

typedef struct Queue
{

    QNode* phead ;

    QNode* ptail ;

} Queue ;

// 队列的初始化

void QInit (Queue* pq) ;

// 队列的销毁

void QDestory (Queue* pq) ;

// 入队---队尾

void QPush (Queue* pq , QDataType* x) ;

// 出队---队头

void QPop (Queue* pq) ;

// 队列判空

bool QEmpty (Queue* pq) ;

// 取队头数据

QDataType* QFront (Queue* pq) ;